namespace ext
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>
	/// Overview  Ext.Direct aims to streamline communication between the client and server
	/// by providing a single interface that reduces the amount of common code
	/// typically required to validate data and handle returned data packets
	/// (reading data, error conditions, etc).  The Ext.direct namespace includes several classes for a closer integration
	/// with the server-side. The Ext.data namespace also includes classes for working
	/// with Ext.data.Stores which are backed by data from an Ext.Direct method.  Specification  For additional information consult the
	/// Ext.Direct Specification.  Providers  Ext.Direct uses a provider architecture, where one or more providers are
	/// used to transport data to and from the server. There are several providers
	/// that exist in the core at the moment:    {@link Ext.direct.JsonProvider JsonProvider} for simple JSON operations  {@link Ext.direct.PollingProvider PollingProvider} for repeated requests  {@link Ext.direct.RemotingProvider RemotingProvider} exposes server...
	/// </summary>
	/// <htmlSummary>
	/// &lt;p&gt;&lt;b&gt;&lt;u&gt;Overview&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
	///
	/// &lt;p&gt;Ext.Direct aims to streamline communication between the client and server
	/// by providing a single interface that reduces the amount of common code
	/// typically required to validate data and handle returned data packets
	/// (reading data, error conditions, etc).&lt;/p&gt;
	///
	/// &lt;p&gt;The Ext.direct namespace includes several classes for a closer integration
	/// with the server-side. The Ext.data namespace also includes classes for working
	/// with Ext.data.Stores which are backed by data from an Ext.Direct method.&lt;/p&gt;
	///
	/// &lt;p&gt;&lt;b&gt;&lt;u&gt;Specification&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
	///
	/// &lt;p&gt;For additional information consult the
	/// &lt;a href=&quot;http://extjs.com/products/extjs/direct.php&quot;&gt;Ext.Direct Specification&lt;/a&gt;.&lt;/p&gt;
	///
	/// &lt;p&gt;&lt;b&gt;&lt;u&gt;Providers&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
	///
	/// &lt;p&gt;Ext.Direct uses a provider architecture, where one or more providers are
	/// used to transport data to and from the server. There are several providers
	/// that exist in the core at the moment:&lt;/p&gt;&lt;div class=&quot;mdetail-params&quot;&gt;&lt;ul&gt;
	///
	/// &lt;li&gt;{@link Ext.direct.JsonProvider JsonProvider} for simple JSON operations&lt;/li&gt;
	/// &lt;li&gt;{@link Ext.direct.PollingProvider PollingProvider} for repeated requests&lt;/li&gt;
	/// &lt;li&gt;{@link Ext.direct.RemotingProvider RemotingProvider} exposes server side
	/// on the client.&lt;/li&gt;
	/// &lt;/ul&gt;&lt;/div&gt;
	///
	/// &lt;p&gt;A provider does not need to be invoked directly, providers are added via
	/// {@link Ext.Direct}.{@link Ext.Direct#add add}.&lt;/p&gt;
	///
	/// &lt;p&gt;&lt;b&gt;&lt;u&gt;Router&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
	///
	/// &lt;p&gt;Ext.Direct utilizes a &quot;router&quot; on the server to direct requests from the client
	/// to the appropriate server-side method. Because the Ext.Direct API is completely
	/// platform-agnostic, you could completely swap out a Java based server solution
	/// and replace it with one that uses C# without changing the client side JavaScript
	/// at all.&lt;/p&gt;
	///
	/// &lt;p&gt;&lt;b&gt;&lt;u&gt;Server side events&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
	///
	/// &lt;p&gt;Custom events from the server may be handled by the client by adding
	/// listeners, for example:&lt;/p&gt;
	/// &lt;pre&gt;&lt;code&gt;
	/// {&quot;type&quot;:&quot;event&quot;,&quot;name&quot;:&quot;message&quot;,&quot;data&quot;:&quot;Successfully polled at: 11:19:30 am&quot;}
	///
	/// // add a handler for a &apos;message&apos; event sent by the server
	/// Ext.Direct.on(&apos;message&apos;, function(e){
	/// out.append(String.format(&apos;&amp;lt;p&gt;&amp;lt;i&gt;{0}&amp;lt;/i&gt;&amp;lt;/p&gt;&apos;, e.data));
	/// out.el.scrollTo(&apos;t&apos;, 100000, true);
	/// });
	/// &lt;/code&gt;&lt;/pre&gt;
	/// </htmlSummary>
	/// <definedin>src\direct\Direct.js</definedin>
	[ScriptName("Direct")]
	[ScriptNamespace("Ext")]
	[Imported()]
	public partial class Direct : ext.util.Observable
	{
		
		#region Constructors
		/// <summary>Constructor</summary>
		internal Direct()
		{
		}
		#endregion
		
		#region Fields
		/// <summary>Fires after an event.</summary>
		/// <definedin>src\direct\Direct.js</definedin>
		[ScriptName("eventEventName")]
		public const string EventEventName = "event";
		
		/// <summary>Fires after an event exception.</summary>
		/// <definedin>src\direct\Direct.js</definedin>
		[ScriptName("exceptionEventName")]
		public const string ExceptionEventName = "exception";
		#endregion
		
		#region Properties
		/// <summary>
		/// Each event type implements a getData() method. The default event types are:
		///   event : Ext.Direct.Event  exception : Ext.Direct.ExceptionEvent  rpc : Ext.Direct.RemotingEvent
		/// </summary>
		/// <htmlSummary>
		/// Each event type implements a getData() method. The default event types are:
		/// &lt;div class=&quot;mdetail-params&quot;&gt;&lt;ul&gt;
		/// &lt;li&gt;&lt;b&gt;&lt;tt&gt;event&lt;/tt&gt;&lt;/b&gt; : Ext.Direct.Event&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;&lt;tt&gt;exception&lt;/tt&gt;&lt;/b&gt; : Ext.Direct.ExceptionEvent&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;&lt;tt&gt;rpc&lt;/tt&gt;&lt;/b&gt; : Ext.Direct.RemotingEvent&lt;/li&gt;
		/// &lt;/ul&gt;&lt;/div&gt;
		/// </htmlSummary>
		/// <definedin>src\direct\Direct.js</definedin>
		[ScriptName("eventTypes")]
		[IntrinsicProperty()]
		public object EventTypes
		{
			get
			{
				throw new System.Exception("Imported - not implemented");
			}
			set
			{
			}
		}
		
		/// <summary>
		/// Four types of possible exceptions which can occur:
		///   Ext.Direct.exceptions.TRANSPORT : &apos;xhr&apos;  Ext.Direct.exceptions.PARSE : &apos;parse&apos;  Ext.Direct.exceptions.LOGIN : &apos;login&apos;  Ext.Direct.exceptions.SERVER : &apos;exception&apos;
		/// </summary>
		/// <htmlSummary>
		/// Four types of possible exceptions which can occur:
		/// &lt;div class=&quot;mdetail-params&quot;&gt;&lt;ul&gt;
		/// &lt;li&gt;&lt;b&gt;&lt;tt&gt;Ext.Direct.exceptions.TRANSPORT&lt;/tt&gt;&lt;/b&gt; : &apos;xhr&apos;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;&lt;tt&gt;Ext.Direct.exceptions.PARSE&lt;/tt&gt;&lt;/b&gt; : &apos;parse&apos;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;&lt;tt&gt;Ext.Direct.exceptions.LOGIN&lt;/tt&gt;&lt;/b&gt; : &apos;login&apos;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;&lt;tt&gt;Ext.Direct.exceptions.SERVER&lt;/tt&gt;&lt;/b&gt; : &apos;exception&apos;&lt;/li&gt;
		/// &lt;/ul&gt;&lt;/div&gt;
		/// </htmlSummary>
		/// <definedin>src\direct\Direct.js</definedin>
		[ScriptName("exceptions")]
		[IntrinsicProperty()]
		public object Exceptions
		{
			get
			{
				throw new System.Exception("Imported - not implemented");
			}
			set
			{
			}
		}
		#endregion
		
		#region Methods
		/// <summary>
		/// Retrieve a {@link Ext.direct.Provider provider} by the
		/// {@link Ext.direct.Provider#id id} specified when the provider is
		/// {@link #addProvider added}.
		/// </summary>
		/// <htmlSummary>
		/// Retrieve a {@link Ext.direct.Provider provider} by the
		/// &lt;b&gt;&lt;tt&gt;{@link Ext.direct.Provider#id id}&lt;/tt&gt;&lt;/b&gt; specified when the provider is
		/// {@link #addProvider added}.
		/// </htmlSummary>
		/// <definedin>src\direct\Direct.js</definedin>
		/// <param name="id">Unique identifier assigned to the provider when calling {@link #addProvider}</param>
		[ScriptName("getProvider")]
		public void GetProvider(string id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Adds an Ext.Direct Provider and creates the proxy or stub methods to execute server-side methods.
		/// If the provider is not already connected, it will auto-connect.
		/// 
		/// var pollProv = new Ext.direct.PollingProvider({
		/// url: &apos;php/poll2.php&apos;
		/// });
		///
		/// Ext.Direct.addProvider(
		/// {
		/// &quot;type&quot;:&quot;remoting&quot;, // create a {@link Ext.direct.RemotingProvider}
		/// &quot;url&quot;:&quot;php\/router.php&quot;, // url to connect to the Ext.Direct server-side router.
		/// &quot;actions&quot;:{ // each property within the actions object represents a Class
		/// &quot;TestAction&quot;:[ // array of methods within each server side Class
		/// {
		/// &quot;name&quot;:&quot;doEcho&quot;, // name of method
		/// &quot;len&quot;:1
		/// },{
		/// &quot;name&quot;:&quot;multiply&quot;,
		/// &quot;len&quot;:1
		/// },{
		/// &quot;name&quot;:&quot;doForm&quot;,
		/// &quot;formHandler&quot;:true, // handle form on server with Ext.Direct.Transaction
		/// &quot;len&quot;:1
		/// }]
		/// },
		/// &quot;namespace&quot;:&quot;myApplication&quot;,// namespace to create the Remoting Provider in
		/// },{
		/// type: &apos;polling&apos;, // create a {@link Ext.direct.PollingProvider}
		/// url: &apos;php/poll.php&apos;
		/// },
		/// pollProv // reference to previously created instance
		/// );
		/// </summary>
		/// <htmlSummary>
		/// Adds an Ext.Direct Provider and creates the proxy or stub methods to execute server-side methods.
		/// If the provider is not already connected, it will auto-connect.
		/// &lt;pre&gt;&lt;code&gt;
		/// var pollProv = new Ext.direct.PollingProvider({
		/// url: &apos;php/poll2.php&apos;
		/// });
		///
		/// Ext.Direct.addProvider(
		/// {
		/// &quot;type&quot;:&quot;remoting&quot;, // create a {@link Ext.direct.RemotingProvider}
		/// &quot;url&quot;:&quot;php\/router.php&quot;, // url to connect to the Ext.Direct server-side router.
		/// &quot;actions&quot;:{ // each property within the actions object represents a Class
		/// &quot;TestAction&quot;:[ // array of methods within each server side Class
		/// {
		/// &quot;name&quot;:&quot;doEcho&quot;, // name of method
		/// &quot;len&quot;:1
		/// },{
		/// &quot;name&quot;:&quot;multiply&quot;,
		/// &quot;len&quot;:1
		/// },{
		/// &quot;name&quot;:&quot;doForm&quot;,
		/// &quot;formHandler&quot;:true, // handle form on server with Ext.Direct.Transaction
		/// &quot;len&quot;:1
		/// }]
		/// },
		/// &quot;namespace&quot;:&quot;myApplication&quot;,// namespace to create the Remoting Provider in
		/// },{
		/// type: &apos;polling&apos;, // create a {@link Ext.direct.PollingProvider}
		/// url: &apos;php/poll.php&apos;
		/// },
		/// pollProv // reference to previously created instance
		/// );
		/// &lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\direct\Direct.js</definedin>
		/// <param name="provider">
		/// Accepts either an Array of Provider descriptions (an instance
		/// or config object for a Provider) or any number of Provider descriptions as arguments. Each
		/// Provider description instructs Ext.Direct how to create client-side stub methods.
		/// </param>
		[ScriptName("addProvider")]
		public void AddProvider(object provider)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Adds an Ext.Direct Provider and creates the proxy or stub methods to execute server-side methods.
		/// If the provider is not already connected, it will auto-connect.
		/// 
		/// var pollProv = new Ext.direct.PollingProvider({
		/// url: &apos;php/poll2.php&apos;
		/// });
		///
		/// Ext.Direct.addProvider(
		/// {
		/// &quot;type&quot;:&quot;remoting&quot;, // create a {@link Ext.direct.RemotingProvider}
		/// &quot;url&quot;:&quot;php\/router.php&quot;, // url to connect to the Ext.Direct server-side router.
		/// &quot;actions&quot;:{ // each property within the actions object represents a Class
		/// &quot;TestAction&quot;:[ // array of methods within each server side Class
		/// {
		/// &quot;name&quot;:&quot;doEcho&quot;, // name of method
		/// &quot;len&quot;:1
		/// },{
		/// &quot;name&quot;:&quot;multiply&quot;,
		/// &quot;len&quot;:1
		/// },{
		/// &quot;name&quot;:&quot;doForm&quot;,
		/// &quot;formHandler&quot;:true, // handle form on server with Ext.Direct.Transaction
		/// &quot;len&quot;:1
		/// }]
		/// },
		/// &quot;namespace&quot;:&quot;myApplication&quot;,// namespace to create the Remoting Provider in
		/// },{
		/// type: &apos;polling&apos;, // create a {@link Ext.direct.PollingProvider}
		/// url: &apos;php/poll.php&apos;
		/// },
		/// pollProv // reference to previously created instance
		/// );
		/// </summary>
		/// <htmlSummary>
		/// Adds an Ext.Direct Provider and creates the proxy or stub methods to execute server-side methods.
		/// If the provider is not already connected, it will auto-connect.
		/// &lt;pre&gt;&lt;code&gt;
		/// var pollProv = new Ext.direct.PollingProvider({
		/// url: &apos;php/poll2.php&apos;
		/// });
		///
		/// Ext.Direct.addProvider(
		/// {
		/// &quot;type&quot;:&quot;remoting&quot;, // create a {@link Ext.direct.RemotingProvider}
		/// &quot;url&quot;:&quot;php\/router.php&quot;, // url to connect to the Ext.Direct server-side router.
		/// &quot;actions&quot;:{ // each property within the actions object represents a Class
		/// &quot;TestAction&quot;:[ // array of methods within each server side Class
		/// {
		/// &quot;name&quot;:&quot;doEcho&quot;, // name of method
		/// &quot;len&quot;:1
		/// },{
		/// &quot;name&quot;:&quot;multiply&quot;,
		/// &quot;len&quot;:1
		/// },{
		/// &quot;name&quot;:&quot;doForm&quot;,
		/// &quot;formHandler&quot;:true, // handle form on server with Ext.Direct.Transaction
		/// &quot;len&quot;:1
		/// }]
		/// },
		/// &quot;namespace&quot;:&quot;myApplication&quot;,// namespace to create the Remoting Provider in
		/// },{
		/// type: &apos;polling&apos;, // create a {@link Ext.direct.PollingProvider}
		/// url: &apos;php/poll.php&apos;
		/// },
		/// pollProv // reference to previously created instance
		/// );
		/// &lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\direct\Direct.js</definedin>
		/// <param name="provider">
		/// Accepts either an Array of Provider descriptions (an instance
		/// or config object for a Provider) or any number of Provider descriptions as arguments. Each
		/// Provider description instructs Ext.Direct how to create client-side stub methods.
		/// </param>
		[ScriptName("addProvider")]
		public void AddProvider(System.Array provider)
		{
			throw new System.Exception("Imported - not implemented");
		}
		#endregion
		
		#region Events
		/// <summary>Fires after an event.</summary>
		/// <definedin>src\direct\Direct.js</definedin>
		[ScriptName("event")]
		public static event ext.auto.Delegate_System_Html_ElementEvent_And_ext_direct_Provider Event;
		
		/// <summary>Fires after an event exception.</summary>
		/// <definedin>src\direct\Direct.js</definedin>
		[ScriptName("exception")]
		public static event ext.auto.Delegate_System_Html_ElementEvent Exception;
		#endregion
	}
}
